package thread_safe;

import java.util.Vector;

/**
 * Vector可以实现可增长的对象数组。与数组一样，它包含可以使用整数索引进行访问的组件。
 * 不过，Vector的大小是可以增加或者减小的，以便适应创建Vector后进行添加或者删除操作。
 * Vector的add() get() size()等方法都是被synchronized
 */
public class VectorDemo {

    private static Vector<Integer> vector = new Vector<>();

    public static void main(String[] args) {
        while (true) {
            for (int i = 0; i < 10; i++) {
                vector.add(i);
            }
            Thread removeThread = new Thread(new Runnable() {
                @Override
                public void run() {
                    for (int i = 0; i < vector.size(); i++) {
                        vector.remove(i);
                    }
                }
            });
            Thread printThread = new Thread(new Runnable() {
                @Override
                public void run() {
                    for (int i = 0; i < vector.size(); i++) {
                        System.out.println(vector.get(i));
                    }
                }
            });
            removeThread.start();
            printThread.start();
            while (Thread.activeCount() > 20) {

            }
        }
    }

}
